package com.southsmart.springboot.smartdoc.api;

/**
 * 常用返回码
 * <p>
 * 0000 操作成功
 * 1xxx 参数校验
 * 2xxx 权限相关
 * 3xxx 服务报错
 * 9999 未知错误
 *
 * @author ziv
 * @version V1.0
 * @since 2021 -05-07 16:53:44
 */
public enum CommonCode implements ResponseCode {
    /**
     * 操作成功
     */
    SUCCESS(true, "0000", "操作成功！"),
    /**
     * 参数异常
     */
    INVALID_PARAM(false, "1001", "参数异常！"),
    /**
     * 此操作需要登陆系统
     */
    NO_LOGIN(false, "2001", "此操作需要登陆系统！"),
    /**
     * 此用户不存在
     */
    NO_USER(false, "2002", "此用户不存在！"),
    /**
     * 用户名或密码错误
     */
    ERROR_LOGIN(false, "2003", "用户名或密码错误！"),
    /**
     * 权限不足，无权操作！
     */
    NO_AUTH(false, "2004", "权限不足，无权操作！"),
    /**
     * 获取token失败
     */
    FETCH_TOKEN_FAILED(false, "2005", "获取token失败"),
    /**
     * 获取token失败
     */
    TOKEN_EXPIRED(false, "2006", "token已过期，请重新登陆！"),
    /**
     * 用户已经登陆，不可以重复登陆！
     */
    IS_LOGIN(false, "2007", "用户已经登陆，不可以重复登陆！"),
    /**
     * 操作失败，请刷新或联系管理员！
     */
    SERVER_ERROR(false, "3001", "操作失败，请刷新或联系管理员！"),
    /**
     * 通用操作失败
     */
    FAILED(false, "9999", "操作失败");
    /**
     * 操作是否成功
     */
    private boolean success;

    /**
     * 返回码
     */
    private String code;

    /**
     * 提示信息
     */
    private String msg;

    /**
     * 实例化
     *
     * @param success 是否成功
     * @param code    返回码
     * @param msg     提示信息
     */
    CommonCode(boolean success, String code, String msg) {
        this.success = success;
        this.code = code;
        this.msg = msg;
    }

    @Override
    public boolean success() {
        return success;
    }

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }
}
